v={1,-1,-1};

zero={0,0,0};

grv=Graphics3D[{Red,Thick,Arrow[{zero,v}]}];

spanv=ParametricPlot3D[t*v,{t,-2,2},PlotStyle->{Pink,Opacity[0.5]}];

gr1=Show[spanv,grv]

w={-2,.5,1};

lcombvw[t_,s_]=t*v+s*w;

grw=Graphics3D[{Blue,Thick,Arrow[{zero,w}]}];

gr2=Show[gr1,grw]

spanvw=ParametricPlot3D[lcombvw[t,s],{t,-1.5,1.5},{s,-1.5,1.5},PlotStyle->Opacity[.8]];

gr3=Show[spanvw,grv,grw]

lcvw=lcombvw[-1.2,-.75];

grlcombvw=Graphics3D[{Purple,Thick,Arrow[{zero,lcvw}]}];

gr4=Show[gr3,grlcombvw]

parlinev=ParametricPlot3D[lcvw+t*v,{t,-4,4},PlotStyle->{Red,Dashed}];

parlinew=ParametricPlot3D[lcvw+t*w,{t,-4,4},PlotStyle->{Blue,Dashed}];

spanv=ParametricPlot3D[t*v,{t,-2,2},PlotStyle->{Dashed,Red}];

spanw=ParametricPlot3D[t*w,{t,-2,2},PlotStyle->{Blue,Dashed,Opacity[0.5]}];

gr5=Show[gr4,parlinev,parlinew,spanv,spanw]

lcvwprv=Graphics3D[{Red,Thick,Arrow[{zero,-1.2*v}]}];

lcvwprw=Graphics3D[{Blue,Thick,Arrow[{zero,-.75*w}]}];

gr6=Show[gr5,lcvwprv,lcvwprw]

u={.5,.2,-1};

gru=Graphics3D[{Green,Thick,Arrow[{zero,u}]}];

Show[spanvw,gru,grv,grw]

z={.5,-1,1};

grz=Graphics3D[{Black,Thick,Arrow[{zero,z}]}];

Show[spanvw,gru,grv,grw,grz]

parlineu=ParametricPlot3D[z+a*u,{a,-4,4},PlotStyle->{Green,Dashed}];

gr7=Show[spanvw,gru,grv,grw,grz,parlineu]

sintp=Solve[z+a*u==lcombvw[t,s],{t,s,a}];

p=z+a*u/.sintp[[1]];

grp=Graphics3D[{Purple,Thick,Arrow[{zero,p}]}];

gr8=Show[gr7,grp]

spanu=ParametricPlot3D[t*u,{t,-4,4},PlotStyle->{Green,Dashed,Opacity[0.5]}];

parlinep=ParametricPlot3D[z+a*p,{a,-4,4},PlotStyle->{Purple,Dashed}];

gr9=Show[gr8,spanu,parlinep]

sinline=Solve[x*u==z+y*p,{x,y}];

q=x*u/.sinline[[1]];

grq=Graphics3D[{Green,Thick,Arrow[{zero,q}]}];

gr10=Show[gr9,grq]